package ar.com.arkios.kfconsap.tablas;

import ar.com.arkios.kfconmodelo.modelo.CodigoEAN;
import ar.com.arkios.kfconsap.excepciones.DataTypeInvalidConversionException;
import ar.com.arkios.kfconsap.excepciones.SapGeneralException;
import ar.com.arkios.kfconsap.excepciones.TableNotFoundException;
import com.sap.mw.jco.JCO;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Ale
 * @version 1.01
 * 
 */


public class CodigoEANDAO extends GenericSAPDAO{
    
    private List<CodigoEAN> misCodigosEAN;    

    //Constructores 
    public CodigoEANDAO(JCO.Function aFunction) throws DataTypeInvalidConversionException, TableNotFoundException {
        super.setMyTableName("TI_ZMATEREAN");
        super.setMyTable(aFunction);
        this.misCodigosEAN = new ArrayList();
    }

    //Getters & Setters
    public List<CodigoEAN> getMisCodigosEAN() {
        return misCodigosEAN;
    }
    
    //Metodos privados
    /**
    * Agrega un "codigoEAN" a la coleccion "misCodigosEAN".
    * @param elCodigoEAN
    */
    private void addUnCodigoEAN(CodigoEAN elCodigoEAN) {
        this.misCodigosEAN.add(elCodigoEAN);
    }
    
    
    /**
     * 
     * Columnas de la Tabla TI_ZMATEREAN
     * MANDT		MANDT		CLNT	3	0   Mandante
     * MATNR		MATNR		CHAR	18	0   Número de material
     * ZEMBALAJE	ZZEMBALAJE	CHAR	8	0  Condición  embalaje de fruta
     * ZPESOENVA	ZPESOENVA	DEC	6	2  Peso del envase.
     * ZESPECIE	ZZESPECIE	CHAR	4	0 Especie de frutas
     * ZVARIEDAD	ZZVARIEDAD	CHAR	4	0 Variedad de fruta
     * ZENVASE	ZZENVASE	CHAR	6	0  Envase de frutas.
     * ZMARCA	ZMARCA		CHAR	4	0  Marca material
     * ZCALIDAD	ZZCALIDAD	CHAR	4	0 Calidad de la fruta
     * EAN11		EAN11		CHAR	18	0 Nro de art. europeo (EAN)
     * ZTEXTO1	ZZDEN_TARJ	CHAR	13	0 Descripción para Terjeton
     * ZTEXTO2	ZZDEN_TARJ	CHAR	13	0 Descripción para Terjeton
     * ZOBS		ZOBS		CHAR	55	0 Observaciones
     */

    
    //Metodos publicos
    /**
    * Recorre "myTable" de la RFC y por cada registro crea un "codigoEAN" y lo agrega a "misCodigosEAN".
    */
    public void findAll() throws SapGeneralException {
        CodigoEAN codigoEAN;
        try{
            for (int i = 0; i < super.getMyTable().getNumRows(); i++){
            super.getMyTable().setRow(i);            
            codigoEAN=new CodigoEAN(super.getMyTable().getString("MATNR"),super.getMyTable().getString("ZEMBALAJE"),super.getMyTable().getDouble("ZPESOENVA"),super.getMyTable().getString("ZVARIEDAD"),super.getMyTable().getString("ZENVASE"),super.getMyTable().getString("ZMARCA"),super.getMyTable().getString("ZCALIDAD"),super.getMyTable().getString("EAN11"), super.getMyTable().getString("ZTEXTO1"), super.getMyTable().getString("ZTEXTO2"),super.getMyTable().getString("ZOBS"));
            addUnCodigoEAN(codigoEAN);
        }
        }catch(JCO.ConversionException ex){
            try {
                throw new DataTypeInvalidConversionException(ex.getMessage());
            } catch (DataTypeInvalidConversionException ex1) {
                throw new SapGeneralException(ex1.getMessage());
            }
            
            
        }

    }
    
    /**
     * Solo para las pruebas.
     * Imprime todos los registros de "myTable".
     */ 
    @Override
    public void printAll() {
        System.out.println("MANDT"+'\t'+"MATNR"+'\t'+"ZEMBALAJE"+'\t'+"ZPESOENVA"+'\t'+"ZESPECIE"+'\t'+"ZVARIEDAD"+'\t'+"ZENVASE"+'\t'+"ZMARCA"+'\t'+"ZCALIDAD"+'\t'+"EAN11"+'\t'+"ZTEXTO1"+'\t'+"ZTEXTO2"+'\t'+"ZOBS");
        for (int i = 0; i < super.getMyTable().getNumRows(); i++){
            super.getMyTable().setRow(i);            
            System.out.println(super.getMyTable().getString("MANDT") +
            '\t' + super.getMyTable().getString("MATNR") + 
            '\t' + super.getMyTable().getString("ZEMBALAJE") +            
            '\t' + super.getMyTable().getString("ZPESOENVA") + 
            '\t' + super.getMyTable().getString("ZESPECIE") +    
            '\t' + super.getMyTable().getString("ZVARIEDAD") + 
            '\t' + super.getMyTable().getString("ZENVASE") +    
            '\t' + super.getMyTable().getString("ZMARCA") + 
            '\t' + super.getMyTable().getString("ZCALIDAD") +
            '\t' + super.getMyTable().getString("EAN11") +                        
            '\t' + super.getMyTable().getString("ZTEXTO1") +
            '\t' + super.getMyTable().getString("ZTEXTO2") +
            '\t' + super.getMyTable().getString("ZOBS")
            );                
        }         
    }

}
